package com.xbongbong.paas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.label.pojo.dto.LabelSortDTO;
import com.xbongbong.pro.label.pojo.vo.LabelGroupListVO;
import com.xbongbong.pro.label.pojo.vo.LabelSortVO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelAddBatchDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelAddDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelCompleteDeleteDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelDeleteBatchDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelDeleteDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelListDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelRecoverDTO;
import com.xbongbong.pro.systemlabel.pojo.dto.SystemLabelUpdateDTO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelAddBatchVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelAddVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelCompleteDeleteVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelDeleteBatchVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelDeleteVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelListVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelPersonAddDTO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelRecoverVO;
import com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelUpdateVO;

/**
 * 系统标签service
 * @author 魏荣杰
 *
 */
public interface SystemLabelService {

    /**
     * Description: 新建标签
     * @param systemLabelAddDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelAddVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/2 21:08
     * @since
     */
    SystemLabelAddVO add(SystemLabelAddDTO systemLabelAddDTO) throws XbbException;

    /**
     * Description: 编辑标签
     * @param systemLabelUpdateDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelUpdateVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/2 21:09
     * @since
     */
    SystemLabelUpdateVO update(SystemLabelUpdateDTO systemLabelUpdateDTO) throws XbbException;

    /**
     * Description: 删除标签
     * @param systemLabelDeleteDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelDeleteVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/2 21:09
     * @since
     */
    SystemLabelDeleteVO delete(SystemLabelDeleteDTO systemLabelDeleteDTO) throws XbbException;

    /**
     * Description: 批量添加标签
     * @param systemLabelAddBatchDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelAddBatchVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/2 22:57
     * @since
     */
    SystemLabelAddBatchVO addBatch(SystemLabelAddBatchDTO systemLabelAddBatchDTO) throws XbbException;

    /**
     * Description: 批量删除标签
     * @param systemLabelDeleteBatchDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelDeleteBatchVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/13 21:51
     * @since
     */
    SystemLabelDeleteBatchVO deleteBatch(SystemLabelDeleteBatchDTO systemLabelDeleteBatchDTO) throws XbbException;

    /**
     * Description: 标签管理列表
     * @param systemLabelListDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelListVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/13 21:53
     * @since
     */
    SystemLabelListVO list(SystemLabelListDTO systemLabelListDTO) throws XbbException;

    /**
     * Description: 标签恢复
     * @param systemLabelRecoverDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelRecoverVO
     * @throws 
     * @author 魏荣杰
     * @date 2021/12/15 15:47
     * @since
     */
    SystemLabelRecoverVO recover(SystemLabelRecoverDTO systemLabelRecoverDTO) throws XbbException;

    /**
     * Description: 标签彻底删除
     * @param systemLabelCompleteDeleteDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelDeleteVO
     * @throws 
     * @author 魏荣杰
     * @date 2021/12/15 15:48
     * @since
     */
    SystemLabelCompleteDeleteVO completeDelete(SystemLabelCompleteDeleteDTO systemLabelCompleteDeleteDTO) throws XbbException;


    /**
     * Description: 标签排序
     * @param labelSortDTO
     * @return com.xbongbong.pro.label.pojo.vo.LabelSortVO
     * @throws 
     * @author 魏荣杰
     * @date 2021/12/15 15:48
     * @since
     */
    LabelSortVO sort(LabelSortDTO labelSortDTO) throws XbbException;

    /**
     * Description: 系统标签分组
     * @param baseDTO
     * @return com.xbongbong.pro.label.pojo.vo.LabelGroupListVO
     * @throws 
     * @author 魏荣杰
     * @date 2021/12/15 15:48
     * @since
     */
    LabelGroupListVO groupList(BaseDTO baseDTO) throws XbbException;

    /**
     * Description: 选择标签列表（组件选择）
     * @param baseDTO
     * @return com.xbongbong.pro.systemlabel.pojo.vo.SystemLabelListVO
     * @throws 
     * @author 魏荣杰
     * @date 2021/12/15 15:48
     * @since
     */
    SystemLabelListVO sampleList(BaseDTO baseDTO) throws XbbException;

    BaseVO personAdd(SystemLabelPersonAddDTO systemLabelPersonAddDTO) throws XbbException;
}
